<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /**
         * 递增和递减操作符在非数值类型数据的使用
         */
        let s1 = "2";//包含有效数字的字符串， 先转换为数字，再作递增/递减操作
        s1++;
        console.log(s1);//3

        let s2 = "a";//将变量的值设置为NaN， 第四章会作讨论
        s2++;
        console.log(s2);//NaN

        let s3 = true;//先将布尔值true转化为数字1，然后再作操作
        s3++;
        console.log(s3);//2

        let s4 = false;//先将布尔值false转为数字0，再做操作
        s4++;
        console.log(s4);//1

        let s5 = 1.1;//执行操作
        s5--;
        console.log(s5);//0.10000000000000009 浮点数舍入错误所致

        /**
         * 应用于对象时，先调用对象的valueOf获取一个可以操作的值，然后再执行递增或者递减的操作
         * 如果结果是NaN，则再调用toString（）方法后再应用前述规则，对象变量变为数值变量
         * @type {{}}
         */
        let obj = {
            // 此处重写了基类Object的 valueOf方法
            valueOf: function () {
                return 12;
            }
        };
        obj++;
        console.log(obj);//13

        let obj2 = {

        }
        obj2++;
        console.log(obj2);//NaN




    </script>
</head>
<body>

</body>
</html>